package org.example.struct.array;

/**
 * @author liyishan
 * @date 2024/4/24 10:33
 * @apiNote
 */

public class Test00461HammingDistance {
    public static void main(String[] args) {
        int x = 1,y = 4;
        System.out.println(hammingDistance1(x,y));
    }
    public static int hammingDistance(int x, int y) {
        return Integer.bitCount(x ^ y);
    }

    /**
     *   x ^ y   的二进制表示  x 和 y 中不同的位
     *   s & 1  s 的最低位是否为1  是 +1   不是 + 0
     *   s 右移一位  把 s 的最低位去掉
     * @param x
     * @param y
     * @return
     */
    public static int hammingDistance1(int x, int y) {
        int s = x ^ y, res = 0;
        while (s != 0) {
            res += s & 1;
            s >>= 1;
        }
        return res;
    }
}
